import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:speed_random/core/config/app_config.dart';
import 'package:speed_random/core/http/ws_app_test.dart';
import 'package:speed_random/generated/mode_app_info_entity.dart';
import 'package:speed_random/generated/mode_user_info_entity.dart';
import 'package:speed_random/global_data.dart';
class api{
  static eprint(content){
   /* print(content);
    return;*/
    wsPrint(content);

  }
  /// 发起 HTTP GET 请求
  /// [url] 请求的相对路径
  /// [onNetworkError] 网络请求出错时的回调函数
  static httpGet(String url, {Function? onNetworkError}) async {
    if(globalData.hostapi.isEmpty){
      globalData.hostapi=globalData.hostapiMain;
    }
    // 这里如果不能正常访问，下面可以使用备用的重新去修一遍。
    final getUrl=globalData.hostapi+url+ "&ver=1.0.0&software_id=${globalData.SoftId}&ch=${AppConfig.current.flavors}&language=${globalData.language}&useradid=${globalData.userId}";

    try {
      final data = await http.get(
        Uri.parse(getUrl),
        headers: {},
      );

      eprint("---------Get-----------");
      eprint(DateTime.now());
      eprint(data.request?.url);
      eprint('Response status: ${data.statusCode}');
      eprint(data.body);
      /*final datak=jsonDecode(data.body);
      eprint("--------------------");
      if(datak["code"]==250){
        confimlogin();
      }*/
      return data;
    } catch (e) {
      eprint("网络请求出错: $e");
      eprint("使用备用的链接进行再次访问。");
      if(globalData.hostapi==globalData.hostapiBak){
        //请求备用的不能使用，重新切换为主线。
        globalData.hostapi=globalData.hostapiMain;
        onNetworkError?.call();
        return null;
      }
      globalData.hostapi=globalData.hostapiBak;
      return await  httpGet(url,onNetworkError: onNetworkError);
    }
  }



//   广告
  static Future adshowapi(adtype, {Function? onNetworkError}) async {
    final data= await httpGet("/ad/googleadmob?adtype=${adtype}", onNetworkError: () {
      // 调用网络错误回调函数
      onNetworkError?.call();
      return null;
    });
    return  jsonDecode(data.body);
  }


//   激励广告已经看完了，领取奖励
  static Future adshowOkapi(String id) async {
    final data= await httpGet("/ad/googleadmoblogok?id=${id}");
    return jsonDecode(data.body);
  }






  //  添加购买订单。
  static Future addOrder(String? productID,String? price,title,{description="",product_type="non-consumable",price_type="USD"}) async {
    final data= await httpGet("/apppay/addOrder?productID=${productID}&description=${description}&price=${price}&title=${title}&product_type=${product_type}&price_type=${price_type}");
    return jsonDecode(data.body);
  }
  //   购买成功后。  // 验证是否是VIP用户 code 200 是，400 不是。 data 到期时间 2025-07-23 12:00:00
  static Future paySuccess(String? productID,String? PurchaseID,String? orderid,String? serverVerificationData) async {
    final data= await httpGet("/apppay/paySuccess?productID=${productID}&PurchaseID=${PurchaseID}&orderid=${orderid}&serverVerificationData=${serverVerificationData}");
    return jsonDecode(data.body);
  }

  /// 获取用户 信息 25-08-08 新增   包含VIP，到期时间，金币
  static Future<ModeUserInfoEntity> getUserInfo() async {
    final data= await httpGet("/apppay/userinfo?");

    final jsonData = jsonDecode(data.body);
    if(jsonData["code"]!=200){
      return ModeUserInfoEntity();
    }
    return ModeUserInfoEntity.fromJson(jsonData["data"]);
  }

/// 获取应用信息 25-08-08 新增   包含商品内购，下载地址，分享地址
  static Future<ModeAppInfoEntity> getAppInfo() async {
    final data= await httpGet("/appinfo/index?");
    final jsonData = jsonDecode(data.body);
    if(jsonData["code"]!=200){
      return ModeAppInfoEntity();
    }
    return ModeAppInfoEntity.fromJson(jsonData["data"]);
  }




}